From: Luca BRUNO Date: Mon, 10 Jan 2022 09:30:11 +0000 (+0000) Subject: libotutil: avoid leaking builder memory on error X-Git-Tag: archive/raspbian/2022.2-3+rpi1^2~15^2^2~32^2 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=0b1a0856925c32fffa93c526b9f415d455d71a1d;p=ostree.git libotutil: avoid leaking builder memory on error This swaps the order of a couple of input sanity checks, in order to fix a minor memory leak due to an early-return on the error path. Memory for the result is now allocated only after input has been sanity-checked. It fixes a static analysis warning highlighted by Coverity. --- diff --git a/src/libotutil/ot-variant-builder.c b/src/libotutil/ot-variant-builder.c index 92ac8ede..754b9323 100644 --- a/src/libotutil/ot-variant-builder.c +++ b/src/libotutil/ot-variant-builder.c @@ -760,10 +760,10 @@ ot_variant_builder_info_new (OtVariantBuilder *builder, const GVariantType *type { OtVariantBuilderInfo *info; - info = (OtVariantBuilderInfo *) g_slice_new0 (OtVariantBuilderInfo); - g_return_val_if_fail (g_variant_type_is_container (type), NULL); + info = (OtVariantBuilderInfo *) g_slice_new0 (OtVariantBuilderInfo); + info->builder = builder; info->type = g_variant_type_copy (type); info->type_info = g_variant_type_info_get (type); @@ -845,10 +845,10 @@ ot_variant_builder_new (const GVariantType *type, { OtVariantBuilder *builder; - builder = (OtVariantBuilder *) g_slice_new0 (OtVariantBuilder); - g_return_val_if_fail (g_variant_type_is_container (type), NULL); + builder = (OtVariantBuilder *) g_slice_new0 (OtVariantBuilder); + builder->head = ot_variant_builder_info_new (builder, type); builder->ref_count = 1; builder->fd = fd;